﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EventoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EstabelecimentoWS;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.SocialWs;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ClienteConvidarAmigo : System.Web.UI.Page
    {
      

        public List<String> Convidados
        {
            get
            {
                return (List<String>)Session["Convidados"];
            }
            set
            {
                Session["Convidados"] = value;
            }
        }
        
        
        public int? IdClienteLogado
        {
            get
            {
                if (Session["Cliente"] != null)
                {
                    return Convert.ToInt32(Session["Cliente"]); 
                }
                return null;
            }
            set
            {
                Session["Cliente"] = value;
            }
        }
        

        public ObjetoEvento Evento
        {
            get
            {
                return (ObjetoEvento)Session["Evento"];
            }
            set
            {
                Session["Evento"] = value;
            }
        }

        public ObjetoEstabelecimento Estabelecimento
        {
            get
            {
                return (ObjetoEstabelecimento)Session["Estabelecimento"];
            }
            set
            {
                Session["Estabelecimento"] = value;
            }
        }

        public ObjetoAmizade[] ListaAmigos
        {
            get
            {
                return (ObjetoAmizade[])Session["ListaAmigos"];
            }
            set
            {
                Session["ListaAmigos"] = value;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IdClienteLogado == null)
            {
                Response.Redirect("Login.aspx?Logout=3");
            }
            
            if (!IsPostBack)
            {
                Convidados = new List<String>();
                int idEvento = Convert.ToInt32(Request.QueryString["ConvidarAmigosEventoId"]);
                Evento = new PubClub_Evento_WS().GetEvento(idEvento);

                Estabelecimento = new PubClub_Estabelecimento_WS().GetEstabelecimento(Evento.EstabelecimentoId);

                ListaAmigos = new PubClub_Social_WS().MinhasAmizades(IdClienteLogado.Value);
            }
            
            #region Criando tabela do evento
            TableHeaderRow linhaCabecalhoEventos = new TableHeaderRow();

            TableHeaderCell celulaCabecalhoTituloDoEvento = new TableHeaderCell();
            Label labelCabecalhoTituloDoEvento = new Label();

            TableHeaderCell celulaCabecalhoLocalDoEvento = new TableHeaderCell();
            Label labelCabecalhoLocalDoEvento = new Label();

            TableHeaderCell celulaCabecalhoDescricaoDoEvento = new TableHeaderCell();
            Label labelCabecalhoDescricaoDoEvento = new Label();

            TableHeaderCell celulaCabecalhoDataDoEvento = new TableHeaderCell();
            Label labelCabecalhoDataDoEvento = new Label();

            labelCabecalhoTituloDoEvento.Text = "Nome do evento";
            celulaCabecalhoTituloDoEvento.Controls.Add(labelCabecalhoTituloDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoTituloDoEvento);

            labelCabecalhoLocalDoEvento.Text = "Local";
            celulaCabecalhoLocalDoEvento.Controls.Add(labelCabecalhoLocalDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoLocalDoEvento);

            labelCabecalhoDescricaoDoEvento.Text = "Descrição";
            celulaCabecalhoDescricaoDoEvento.Controls.Add(labelCabecalhoDescricaoDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoDescricaoDoEvento);

            labelCabecalhoDataDoEvento.Text = "Data";
            celulaCabecalhoDataDoEvento.Controls.Add(labelCabecalhoDataDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoDataDoEvento);

            tabelaEvento.Rows.Add(linhaCabecalhoEventos);

            TableRow linhaDadosDoEvento = new TableRow();

            TableCell celulaNomeDoEvento = new TableCell();
            Label labelNomeDoEvento = new Label();

            TableCell celulaLocalDoEvento = new TableCell();
            Label labelLocalDoEvento = new Label();

            TableCell celulaDescricaoDoEvento = new TableCell();
            Label labelDescricaoDoEvento = new Label();

            TableCell celulaDataDoEvento = new TableCell();
            Label labelDataDoEvento = new Label();

            labelNomeDoEvento.Text = Evento.Titulo;
            celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
            linhaDadosDoEvento.Cells.Add(celulaNomeDoEvento);

            labelLocalDoEvento.Text = Estabelecimento.NomeFantasia;
            celulaLocalDoEvento.Controls.Add(labelLocalDoEvento);
            linhaDadosDoEvento.Cells.Add(celulaLocalDoEvento);

            labelDescricaoDoEvento.Text = Evento.Descricao;
            celulaDescricaoDoEvento.Controls.Add(labelDescricaoDoEvento);
            linhaDadosDoEvento.Cells.Add(celulaDescricaoDoEvento);

            labelDataDoEvento.Text = Evento.DataHora.ToShortDateString();
            celulaDataDoEvento.Controls.Add(labelDataDoEvento);
            linhaDadosDoEvento.Cells.Add(celulaDataDoEvento);

            tabelaEvento.Rows.Add(linhaDadosDoEvento);
            #endregion

            #region tabela convidados
            TableHeaderRow linhaCabecalhoConvidado = new TableHeaderRow();

            TableHeaderCell celulaCabecalhoNomeDoConvidado = new TableHeaderCell();
            Label labelCabecalhoNomeDoConvidado = new Label();

            TableHeaderCell celulaCabecalhoAcao = new TableHeaderCell();
            Label labelCabecalhoAcao = new Label();

            labelCabecalhoNomeDoConvidado.Text = "Seus amigos";
            celulaCabecalhoNomeDoConvidado.Controls.Add(labelCabecalhoNomeDoConvidado);
            linhaCabecalhoConvidado.Cells.Add(celulaCabecalhoNomeDoConvidado);

            labelCabecalhoAcao.Text = "Ação";
            celulaCabecalhoAcao.Controls.Add(labelCabecalhoAcao);
            linhaCabecalhoConvidado.Cells.Add(celulaCabecalhoAcao);

            tabelaConvidados.Rows.Add(linhaCabecalhoConvidado);

            PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
            foreach (var item in ListaAmigos)
            {
                ObjetoCliente clienteAmigo = webServiceCliente.GetCliente(item.ClienteId2);

                TableRow linhaDadosDoConvidado = new TableRow();

                TableCell celulaNomeDoConvidado = new TableCell();
                Label labelNomeDoConvidado = new Label();

                TableCell celulaAcaoDoConvidado = new TableCell();

                ImageButton btConvidar = new ImageButton();

                int i = 0;
                if (i % 2 != 0)
                {
                    linhaDadosDoConvidado.CssClass = "odd";
                }

                i++;

                labelNomeDoConvidado.Text = clienteAmigo.Nome;
                celulaNomeDoConvidado.Controls.Add(labelNomeDoConvidado);
                linhaDadosDoConvidado.Cells.Add(celulaNomeDoConvidado);

                btConvidar.ImageUrl = "~/Imagens/IconeConvidarAmigo.png";
                btConvidar.ToolTip = "Adicionar amigos na lista.";
                btConvidar.CommandArgument = clienteAmigo.ClienteId.ToString();
                btConvidar.Click += new ImageClickEventHandler(btConvidar_Click);
                
              

                celulaAcaoDoConvidado.Controls.Add(btConvidar);
                linhaDadosDoConvidado.Cells.Add(celulaAcaoDoConvidado);

                tabelaConvidados.Rows.Add(linhaDadosDoConvidado);
            }
            #endregion
        }

        void btConvidar_Click(object sender, ImageClickEventArgs e)
        {
            if (sender is ImageButton)
            {
                ImageButton btnConvdar = (ImageButton)sender;
                lbAviso.Visible = true;
                string convidadoId = btnConvdar.CommandArgument;

                Session["idConvidados"] += convidadoId + ",";
                

                ObjetoCliente cliente = new PubClub_Cliente_WS().GetCliente(Convert.ToInt32(convidadoId));

                //Convidados.Add(convidadoId);

                lbAviso.Text = cliente.Nome + " foi adicionado(a) a lista.";
            }
        }

        protected void btConvidarAmigos_Click(object sender, EventArgs e)
        {
            string convidadosIds = Session["idConvidados"].ToString();

           

#if !DEBUG
            ObjetoRetornoEvento retornoEvento = new PubClub_Evento_WS().ConvidarPessoas(Evento.Id, convidadosIds);

            if (retornoEvento.Sucesso == true)
            {
                Session["idConvidados"] = "";
                Response.Redirect("HomeCliente.aspx?CondicaoEvento=1");
            }
            else
            {
                lbAviso.ForeColor = System.Drawing.Color.Red;
                lbAviso.Text = retornoEvento.Menssagem;
                Session["idConvidados"] = "";

            }
#else
            lbAviso.Text = "Codigo do evento = " + Evento.Id.ToString();
 
            Label lbConvidados = new Label();
            //lbConvidados.Text = convidadosIds;
            lbConvidados.Text = convidadosIds;
            this.Controls.Add(lbConvidados);
#endif
        }
    }
}